class: center, middle, inverse, title-slide # Introduction ## Analyse spatiale des agroécosystèmes avec R ### Antoine Casquin ### Inrae, UMR SAS ### 31 Août 2021 --- ## Motivations pour l'analyse de données spatiales et la cartographie en R - Automatisation de tâches répétitives - Reproductibilité / Transférabilité - Intégration dans R et ses nombreux packages "métiers" - Facilité pour l'analyse exploratoire - Utilisation d'algorithmes récents - Des données brutes à la figure finale dans le même logiciel
--- ## Flux de travail ### Des données brutes à la "Figure"  --- ## Flux de travail ### De nombreux outils disponibles à chaque étape, +/- automatiques  --- ## Flux de travail ### A chaque étape, un certain risque d'erreur  --- ## Flux de travail ### En cas d'erreur constatée  --- ## Flux de travail ### Il faut remonter à la source de celle-ci.  --- ## Flux de travail ### Il faut remonter à la source de celle-ci..  --- ## Flux de travail ### Il faut remonter à la source de celle-ci...  --- ## Flux de travail ### Les outils les + "automatiques" sont aussi les + "reproductibles"  - Si le flux de travail est entièrement automatisé, l'erreur est plus facilement repérable et la correction de celle-ci n'implique pas de refaire tout le travail des étapes suivantes. - "Mémoire" de tout ce qui a été fait depuis les données brutes --- ## Intêret d'un flux de travail automatisé ### Pas seulement pour corriger les erreurs  - Tester de nouvelles hypothèses / comparer des méthodologies - Transférer la méthodologie sur un autre site d'étude - Partager la méthodologie avec les collègues / la communauté --- ## Flux de travail ### Il est possible de réaliser toutes ces étapes en R !  <span style="font-size:60%"> .footnote[[ En Python aussi, mais je ne connais pas bien ...]] </span> --- ## Automatisation de tâches répétitives (Exemple) .pull-left[ - Calculer pour chaque maille SAFRAN la précipitation mensuelle **(R/Python/Excel ...)** - Calculer la précipitation mensuelle dans le site d'étude ainsi que l'écart-type et le CV entre les mailles **(R/Python/Excel ...)** et insérer dans chaque sous-figure **(SIG/Illustrator ...)** - Insérer les 17 cartes sur une grille régulière et avec une légende commune **(SIG/Illustrator ...)** - ≈ **≈40 lignes de code** vs **≈n heures de "clic**" ] .pull-right[ <center> <br /> Variabilité spatiale et temporelle des précipitations mensuelles dans le bassin versant de l'Yvel (2018-2019) </center> ] --- ## Des données brutes à la figure finale dans le même logiciel (Exemple) .pull-left[ - Calculer pour chaque maille SAFRAN la précipitation mensuelle **(R/Python/Excel ...)** - Calculer la précipitation mensuelle dans le site d'étude ainsi que l'écart-type et le CV entre les mailles **(R/Python/Excel ...)** et insérer dans chaque sous-figure **(SIG/Illustrator ...)** - Insérer les 17 cartes sur une grille régulière et avec une légende commune **(SIG/Illustrator ...)** - ≈ **R + packages "spatial"** vs **R/Python/Excel + SIG + Illustrator**" ] .pull-right[ <center> <br /> Variabilité spatiale et temporelle des précipitations mensuelles dans le bassin versant de l'Yvel (2018-2019) </center> ] --- ## Accès à de nombreuses bases de données via API (package R) .center[ <table class="table" style="font-size: 15px; margin-left: auto; margin-right: auto;"> <thead> <tr> <th style="text-align:left;"> Data </th> <th style="text-align:left;"> R.package </th> <th style="text-align:left;"> Database </th> </tr> </thead> <tbody> <tr> <td style="text-align:left;"> Administrative boundaries </td> <td style="text-align:left;"> rgeoboundaries </td> <td style="text-align:left;"> geoBoundaries </td> </tr> <tr> <td style="text-align:left;"> Population </td> <td style="text-align:left;"> wopr </td> <td style="text-align:left;"> WorldPop </td> </tr> <tr> <td style="text-align:left;"> OpenStreetMap </td> <td style="text-align:left;"> osmdata </td> <td style="text-align:left;"> OpenStreetMap (OSM) </td> </tr> <tr> <td style="text-align:left;"> Elevation </td> <td style="text-align:left;"> elevatr </td> <td style="text-align:left;"> AWS Terrain Tiles </td> </tr> <tr> <td style="text-align:left;"> Temperature </td> <td style="text-align:left;"> raster </td> <td style="text-align:left;"> WorldClim </td> </tr> <tr> <td style="text-align:left;"> Rainfall </td> <td style="text-align:left;"> nasapower </td> <td style="text-align:left;"> NASA-POWER Project </td> </tr> <tr> <td style="text-align:left;"> Humidity </td> <td style="text-align:left;"> nasapower </td> <td style="text-align:left;"> NASA-POWER Project </td> </tr> <tr> <td style="text-align:left;"> Vegetation </td> <td style="text-align:left;"> MODIStsp </td> <td style="text-align:left;"> MODIS </td> </tr> <tr> <td style="text-align:left;"> Land cover </td> <td style="text-align:left;"> MODIStsp </td> <td style="text-align:left;"> MODIS </td> </tr> <tr> <td style="text-align:left;"> Air pollution </td> <td style="text-align:left;"> openair </td> <td style="text-align:left;"> UK Department Environment Food & Rural Affairs </td> </tr> <tr> <td style="text-align:left;"> Demographic and Health Surveys (DHS) </td> <td style="text-align:left;"> rdhs </td> <td style="text-align:left;"> DHS Program </td> </tr> </tbody> </table> ] Source :https://www.paulamoraga.com/presentation-geohealth/#12 https://rspatialdata.github.io/ --- ## Accès à de nombreuses bases de données via API (package R) The goal of **sdmpredictors** is to make environmental data, commonly used for species distribution modelling (SDM), also called ecological niche modelling (ENM) or habitat suitability modelling, easy to use in R. It contains methods for getting metadata about the available **environmental data for the current climate but also for future and paleo climatic conditions**. https://cran.r-project.org/web/packages/sdmpredictors/vignettes/quickstart.html **MODIStsp** is an R package allowing to automatize the **creation of time series of rasters derived from MODIS Land Products data**. It allows performing several preprocessing steps on MODIS data available within a given time period. https://cran.r-project.org/web/packages/MODIStsp/vignettes/MODIStsp.html --- ## Accès à un vaste écosystème de packages "métiers" - Le package [motif](https://nowosad.github.io/motif/index.html) pour étudier des motifs du paysage - Le package [gstat](https://cran.r-project.org/web/packages/gstat/vignettes/gstat.pdf) qui fournit des outils pour la géostatistique univariée et multivariée dont : - Variogramme simple et multi-directionnel - (Co)Kriging simple, ordinaire, universel ... - ... - [spatstat](https://cran.r-project.org/web/packages/spatstat/index.html) Boïte à outils pour l'analyse spatial de motifs de points - [spatialRF](https://github.com/BlasBenito/spatialRF) Régréssion "Forêt aléatoire spatiale" - ... - ** Plus de 275 packages sur le CRAN spécialisés dans l'analyse de données spatiales ** https://cran.r-project.org/web/views/Spatial.html --- class: center, middle # Gallerie ## De la simple "visualisation de couche" à de belles cartes # 100% R --- ## Affichage simple d'une couche : points  .footnote[https://pmarchand1.github.io/atelier_rgeo/rgeo_workshop.html] --- ## Affichage simple d'une couche : polygones  .footnote[https://pmarchand1.github.io/atelier_rgeo/rgeo_workshop.html] --- ## Affichage simple d'une couche : raster  --- ## Carte (très) simple : polygones et graticule  .footnote[https://pmarchand1.github.io/atelier_rgeo/rgeo_workshop.html] --- ## Carte (très) simple : points colorés en fonction d'un attribut  .footnote[https://www.paulamoraga.com/book-geospatial/sec-spatialdataandCRS.html] --- ## Très pratique : Les "petits multiples" - raster ### Explorer la dimension temporelle d'une variable <center>  <br /> </center> .footnote[https://oscarperpinan.github.io/rastervis/] --- ## Très pratique : Les "petits multiples" - raster ### Explorer la dimension temporelle de plusieurs variables  .footnote[https://www.mdpi.com/2306-5729/4/3/92] --- ## Très pratique : Les "petits multiples" - polygones ### Visualiser plusieurs attributs d'un coup d'oeil <br /> https://www.paulamoraga.com/book-geospatial/sec-spatialdataandCRS.html --- ## Cartogramme simple : variation de la taille d'un marqueur en fonction d'un attribut <center><br /></center> .footnote[https://riatelab.github.io/mapsf/articles/mapsf.html] --- ## Cartogramme simple : couleur de remplissage en fonction d'un attribut <center><br /></center> .footnote[https://riatelab.github.io/mapsf/articles/mapsf.html] --- ## Cartogramme simple : représentation de deux attributs <center><br /></center> .footnote[https://riatelab.github.io/mapsf/articles/mapsf.html] --- ## Cartogramme simple avec insertion d'une carte de localisation <center><br /></center> .footnote[https://riatelab.github.io/mapsf/articles/web_only/how_to_create_inset_maps.html] --- ## Cartogramme simple avec insertion d'un graphique <center><br /></center> .footnote[https://riatelab.github.io/mapsf/articles/web_only/how_to_create_inset_maps.html] --- ## Carte "complète" : Reliefs Mondiaux <center><br /></center> .footnote[https://github.com/mtennekes/tmap] --- ## Carte "complète" : Taux d'obésité par comté, Etats-Unis <center><br /></center> .footnote[https://github.com/mtennekes/tmap] --- ## Carte "complexe" : Economie, Grande métropoles et taux de croissance <center><br /></center> .footnote[https://github.com/mtennekes/tmap] --- ## Carte "complexe" : Economie, Grande métropoles et taux de croissance ### Export web (leaflet) <center><br /></center> .footnote[https://github.com/mtennekes/tmap] --- class: center, middle ## De très belles cartes # 100% R --- ## Carte "bi-variées" ### Salaires moyens et inégalités en Suisse <center><br /></center> .footnote[https://timogrossenbacher.ch/2019/04/bivariate-maps-with-ggplot2-and-sf/] --- ## Carte "bi-variées" ### Pluvométrie annuelle et intensité <center><br /></center> .footnote[https://erdavis.com/2021/04/01/when-it-rains-does-it-pour/] --- ## Voir même à trois variables ... ### Structure des populations par région <center><br /></center> .footnote[https://github.com/ikashnitsky/the-lancet-2018/] --- ## Possibilité de faire des animations <center><br /></center> .footnote[https://geocompr.robinlovelace.net/adv-map.html#animated-maps] --- ## De la 3D <center><br /></center> .footnote[https://www.rayshader.com/] --- ## De la 3D animée ! <center><br /></center> .footnote[https://www.tylermw.com/3d-maps-with-rayshader/] --- ## Une belle Figure d'illustration pour un article <center><br /></center> .footnote[https://www.urbandemographics.org/post/figures-map-layers-r/] --- class: center, middle ## Quelques réalisation issues de ma thèse # 100% R --- ## "Petits multiples", raster ### Présentation d'un indice de configuration spatiale du paysage <center><br /></center> --- ## Version animée .pull-left[] .pull-left[] --- ## "Petits multiples", raster ### Assolement de 2010 à 2019 <center><br /></center> --- ## "Petits multiples", vectoriel ### Concentration en TP dans des têtes de bassin versant pour plusieurs dates d'échantillonage <center><br /></center> --- ## "Animé", vectoriel ### Concentration en TP dans des têtes de bassin versant pour plusieurs dates d'échantillonage <center><br /></center> --- ## Planche dans article ### Raster et vectoriel <center><br /></center> <span style="font-size:70%"> .footnote[Casquin, A., Dupas, R., Gu, S. et al. The influence of landscape spatial configuration on nitrogen and phosphorus exports in agricultural catchments. Landscape Ecol (2021). https://doi.org/10.1007/s10980-021-01308-5 ] </span> --- ## Planche dans article ### Vectoriel et histogrammes <center><br /></center> <span style="font-size:70%"> .footnote[Casquin, A., Dupas, R., Gu, S. et al. The influence of landscape spatial configuration on nitrogen and phosphorus exports in agricultural catchments. Landscape Ecol (2021). https://doi.org/10.1007/s10980-021-01308-5 ] </span> --- ## Une cartographie web des zones à risque de transfert de Phosphore https://antoine-csqn.github.io/YV1.html <iframe src="https://antoine-csqn.github.io/YV1.html" width="100%" height="400px"></iframe> --- class: center, middle ## Fin de l'Introduction ## Programme 1. Introduction : Motivations et exemples (1h) 1. Manipulation de données avec le tidyverse (1h30) 1. Les bases de ggplot (1h) 1. Analyse de données vectorielles géolocalisées avec le package sf (Partie 1 et 2, 7h) 1. Analyse de données raster avec le package raster (5h) 1. Délimitation de bassins versants et analyse de terrain avec le package whitebox (2h00) 1. Cartographie thématique avec ggplot et tmap (2h) ---